from component.c_log import LOG
from component.c_mysql import MySQLDB
from component.c_config import app_config

TAG = "s_happy_record"
class HappyRecordServer:
    def __init__(self,queue,submit_event):
        self.queue = queue
        self.submit_event = submit_event
        LOG(TAG,"初始化数据库连接")
        # 数据库配置
        db_config = app_config.db_connection_params

        # 初始化数据库连接
        self.db = MySQLDB(**db_config)
        LOG(TAG,"数据库连接初始化完成")

        # 创建表，若表存在则不会创建
        self.__create_table()

    
    def __create_table(self):
        LOG(TAG,"检查数据库表 happy_record 是否创建")
        if not self.db.table_exists("happy_record"):
            LOG(TAG,"数据表 happy_record 是未创建")
            # 创建happy_record表
            create_table_sql = """
            CREATE TABLE IF NOT EXISTS happy_record (
                id INT AUTO_INCREMENT PRIMARY KEY,
                date DATE NOT NULL COMMENT '使用日期',
                device_status enum('未使用','使用') DEFAULT '未使用' COMMENT '设备使用',
                duration INT NOT NULL COMMENT '使用时长（分钟）',
                location VARCHAR(255) NOT NULL COMMENT '地理位置',
                place VARCHAR(255) NOT NULL COMMENT '具体场所'
            ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
            """
            self.db.execute_query(create_table_sql)
            LOG(TAG,"数据表 happy_record 是创建成功")
        else:
            LOG(TAG,"数据表 happy_record 是已创建")

    def add_data(self,data):
        '''
        data:字典格式。内容如下
        data = {
            'sport': '跑步', 
            'location': '湖南科技学院', 
            'place': '操场'
            'date': '2025-03-08', 
            'distance': 0.0, 
            'duration': '00:00:00', 
            'calories': 0, 
            'avg_pace': 0.0, 
            'avg_speed': 0.0, 
        }
        '''
        # 插入数据
        LOG(TAG,f"插入数据 {data}")
        self.db.insert("happy_record",data)
        LOG(TAG,"插入数据完成")

    def run(self):
        LOG(TAG,"启动Happy记录服务")
        while True:
            if self.submit_event.is_set():
                data = self.queue.get()
                self.add_data(data)
                self.submit_event.clear()
                print("HappyRecordServer","提交成功")
            else:
                print("HappyRecordServer","等待提交")
                self.submit_event.wait()
